﻿using Polaris.Domain.Model.Dto.Sys_Menu.Request;
using Polaris.Domain.Model.Dto.Sys_Menu.Response;
using Polaris.Domain.Model.Entity.Base;
using Polaris.Domain.Model.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Polaris.Domain.Interfaces.Admin
{
    public interface ISys_Menu
    {
        /// <summary>
        /// 获取菜单列表
        /// </summary>
        /// <param name="search"></param>
        /// <returns></returns>
        //Task<PaginationInfo<MenuInfoResponse>> GetMenuList(SearchMenuRequest search);
        Task<List<MenuTree>> GetMenuList(SearchMenuRequest search);

        /// <summary>
        /// 创建菜单
        /// </summary>
        /// <param name="create"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task CreateMenu(CreateMenuRequest create, Guid? userId);

        /// <summary>
        /// 修改菜单
        /// </summary>
        /// <param name="update"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task UpdateMenu(UpdateMenuRequest update, Guid? userId);

        /// <summary>
        /// 删除菜单 逻辑删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task DeleteMenu(string id, Guid? userId);

        /// <summary>
        /// 根据id获取菜单
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<MenuInfoResponse> GetMenuById(Guid id);

        /// <summary>
        /// 获取树形菜单
        /// </summary>
        /// <returns></returns>
        Task<List<MenuTree>> GetMenuTree();

    }
}
